#include <iostream>
#include <iomanip>
#include <cstdlib>

int main()
{
    // int *a = (int *)malloc(sizeof(int));
    // *a = 10;
    // std::cout<<*a<<std::endl;
    // free(a);

    //new/delete为运算符关键字
    // int *a = new int(10);
    // std::cout<<*a<<std::endl;
    // delete a;

    // //一维数组
    // int *a = new int[3];
    // for(int i = 0; i < 3; i++)
    // {
    //     a[i] = i + 1;
    //     std::cout<<a[i]<<" ";
    // }
    // //释放数组
    // delete []a;
    // std::cout<<std::endl;

    //申请二维数组
    int* *a = new int*[3];
    for(int i = 0; i < 3; i++)
    {
        a[i] = new int[4];
    } 

    for(int i = 0; i < 3; i++)
    {
        for(int j = 0; j < 4; j++)
        {
            a[i][j] = i * 4 + j + 1;
        }
    }
    for(int i = 0; i < 3; i++)
    {
        for(int j = 0; j < 4; j++)
        {
            std::cout<<std::setw(20)<<a[i][j]<<" "; 
        }
        std::cout<<std::endl;
    }

    for(int i = 0; i < 3; i++)
    {
        delete []a[i];
    }

    delete []a;
    return 0;
}